import { Metadata } from 'next'; import { notFound } from 'next/navigation'; import { allDocs } from 'contentlayer/generated'; import { name } from '@/config/site'; import { getTableOfContents } from '@/lib/toc'; import Mdx from '@/components/MDX'; import TablerSponsorsBanner from '@/components/TablerSponsorsBanner'; import Link from 'next/link'; import TOC from '@/components/TOC'; import DocsMenu from '@/components/DocsMenu'; import Icon from '@/components/Icon'; interface DocPageProps { params: { slug: string[] } } async function getDocFromParams(params) { const slug = params.slug?.join('/') || ''; const doc = allDocs.find((doc) => doc.slugAsParams === slug); if (!doc) { null; } return doc; } export async function generateMetadata({ params, }: DocPageProps): Promise { const doc = await getDocFromParams(params); if (!doc) { return {}; } return { title: `${doc.title} - Documentation - ${name}`, description: doc.description, openGraph: { type: 'article', }, }; } export async function generateStaticParams(): Promise< DocPageProps['params'][] > { return allDocs.map((doc) => ({ slug: doc.slugAsParams.split('/'), })); } export default async function DocPage({ params }: DocPageProps) { const doc = await getDocFromParams(params); if (!doc) { notFound(); } const toc = await getTableOfContents(doc.body.raw); return (
{/**/}
{/* {category && (
{category}
)} */} {doc.title &&

{doc.title}

} {doc.description &&

{doc.description}

}
On this page
Improve this page
); }